package com.demo.fork.demo1;

import java.util.ArrayList;
import java.util.List;

/**
 * @author : YU.TAN
 * @date : 2021/10/12 17:42
 *
 * Java 的泛型是伪泛型
 *  Java 在编译期间，所有的泛型信息都会被擦掉
 *  Java 的泛型基本上都是在编译器这个层次上实现的，在生成的字节码中是不包含泛型中的类型信息的，使用泛型的时候加上类型参数，在编译器编译的时候会去掉，这个过程成为类型擦除
 *
 *  eg.
 *  List<Object>和List<String>等类型，在编译后都会变成List,而由泛型附加的类型信息对 JVM 是看不到的
 *
 */
public class TestC {
    public static void main(String[] args) {

////        例如
//        List<String> list = new ArrayList<>();
//        add(list, 10);
//        String s = list.get(0);


        //list1 和list2 在编译后都是List
        ArrayList<String> list1 = new ArrayList<String>();
        list1.add("abc");

        ArrayList<Integer> list2 = new ArrayList<Integer>();
        list2.add(123);
        System.out.println(list1.getClass()==list2.getClass());


    }

    public static void add(List list,Object o){
        list.add(o);
    }
}
